package 集合;
import java.util.*;
import 常用类库API.*;
import java.util.function.*;
import java.lang.invoke.*;
/*
 迭代器(输出)
 1，Iterator 1.5以前用的比较多
 2,foreach 1.5以后用的比较多，list set都可以用，语法方便简洁
 3,ListIterator  只针对list，扩展了Iterator功能可以向上迭代
 4,Enumeration 需要Vector列表
*/
public class X04集合迭代器
{
	public static void main(String[]args){
		Cat c1=new Cat("huahua",1);
		Cat c2=new Cat("tom",2);
		Cat c3=new Cat("miaomiao",3);
		Cat c4=new Cat("huahua",1);
		List<Cat> list=new ArrayList<>();
		list.add(c1);
		list.add(c2);
		list.add(c3);
		list.add(c4);
		//foreach迭代
		System.out.println("====foreach====");
		for(Cat c:list){
			System.out.println(c);
		}
		//iterator迭代
		System.out.println("====iterator====");
		Iterator<Cat> it=list.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}
		//enumeration迭代需Vector配合
		System.out.println("====enumeration====");
		Vector<String> v=new Vector<>();
		v.add("lili");
		v.add("mak");
		v.add("tom");
		v.add("lucy");
		Enumeration ea=v.elements();
		while(ea.hasMoreElements()){
			System.out.println(ea.nextElement());
		}
		//1.8以后的foreach配合lamb表达式
		//v.forEach((String s)->{System.out.println(s);});
		//v.forEach(s->System.out.println(s));//lambda表达式等同于下面的匿名内部类形式
		v.forEach(new Consumer<String>(){//Consumer<T> 消费者模式接口，消费一个对象
				@Override
				public void accept(String p1)
				{
					System.out.println(p1);
				}		
		});
		}
}
